<?php
// 这是系统自动生成的公共文件


/**
 * 密码加密的公共方法
 */
if (!function_exists('passwordEncrypt')) {
    function passwordEncrypt($password){
        $salt= '1910A';
        return md5($salt.$password.$salt);
    }
}

/**
 * 公共响应方法
 */
if (!function_exists('responses')) {
    /**
     * 公共响应方法
     * @param $code
     * @param $msg
     * @param $data
     * @return \think\response\Json
     */
    function responses($code,$msg,$data){
        return json(['code' => $code,'msg' => $msg,'data' => $data]);
    }
}
/**
 * 公共响应成功方法
 */
if (!function_exists('success')) {
    /**
     *
     * @param $data
     * @param int|int $code
     * @param string $msg
     * @return \think\response\Json
     */
    function success(array $data=[], int $code=200, string $msg='ok'){
        return responses($code,$msg,$data);
    }
}
/**
 * 公共响应失败方法
 */
if (!function_exists('fail')) {
    /**
     * @param string $code
     * @param $msg
     * @param $data
     * @return \think\response\Json
     */
    function fail($code='2001',$msg='参数不正确',$data = []){
        return responses($code,$msg,$data);
    }
}

/**
 * 递归实现无限极分类父子结构数据
 */
if (!function_exists('recursionHandleData')) {
    /**
     *
     * @param $data *数据
     * @param int $pid *父级id
     * @return array
     */
    function recursionHandleData($data,$pid=0){
        $child = [];
        foreach ($data as $value) {
            if ($value['pid'] == $pid) {
                $child[$value['id']] = $value;
                $child[$value['id']]['children'] = recursionHandleData($data,$value['id']);
            }
        }
        return  $child;
    }
}

/**
 * 递归实现无限极分类树形结构
 */
if (!function_exists('recursionTree')) {
    /**
     *
     * @param $data *数据
     * @param int $pid *父级id
     * @return array
     */
    function recursionTree($data,$pid=0,$level=0){
        static $arr = [];
        foreach ($data as $key => $value) {
            if ($value['pid'] == $pid) {
                $value['level'] =$level;
                $arr[] =$value;
                unset($data[$key]);
                recursionTree($data,$value['id'],$level+1);

            }
        }
        return  $arr;
    }
}

/**
 * 处理type有关数据的方法
 */

if (!function_exists('handleTypeEmpty')) {
    /**
     * @param $data
     * @return mixed
     */
    function handleTypeEmpty($data,$filed='spec'){
        # 处理规格中的空字符串
        foreach ($data[$filed] as $key => &$value) {
            if (trim($value['name']) == '') {
                unset($data[$filed][$key]);
                # 下面的逻辑还执行
                continue ;
            }
            # 处理规格值中的空字符串
            foreach ($value['value'] as  $k => $item) {
                if (trim($item) == '') {
                    unset($value['value'][$k]);
                }
            }

            # 如果有规格名称、但是没有规格值
            if (count($value['value']) == 0) {
                unset($data[$filed][$key]);
            }
        }

        return  $data;
    }
}
/**
 * 防止xss攻击
 * 过滤脚本
 */
if (!function_exists('remove_xss')) {
    /**
     *  防止xss攻击
     * @param $string
     * @return string
     */
    function remove_xss($string){
        # 判断是否为空、为空 直接返回
        if (empty($string)) {
            return $string;
        }
        # 创建配置对象
        $config = HTMLPurifier_Config::createDefault();
        # 添加配置信息
        $config -> set('Core.Encoding', 'UTF-8');# 配置编码格式
        // 设置允许使用的HTML标签
        $config -> set('HTML.Allowed','div,b,strong,i,em,a[href|title],ul,ol,li,br,p[style],span[style],img[width|height|alt|src]');
        // 设置允许出现的CSS样式属性
        $config -> set('CSS.AllowedProperties', 'font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align');
        // 设置a标签上是否允许使用target="_blank"
        $config -> set('HTML.TargetBlank', TRUE);
        # 创建过滤对象
        $purifier = new HTMLPurifier($config);
        # 进行过滤
        return $purifier->purify($string);
    }
}


